package com.zyn.java8.time;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;

/**
 * http://www.importnew.com/14857.html
 * 
LocalDateTime的其他方法跟LocalDate和LocalTime相似。这种相似的方法模式非常有利于API的学习。下面总结了用到的方法前缀：
of： 静态工厂方法，从组成部分中创建实例
from： 静态工厂方法，尝试从相似对象中提取实例。from()方法没有of()方法类型安全
now： 静态工厂方法，用当前时间创建实例
parse： 静态工厂方法，总字符串解析得到对象实例
get： 获取时间日期对象的部分状态
is： 检查关于时间日期对象的描述是否正确
with： 返回一个部分状态改变了的时间日期对象拷贝
plus： 返回一个时间增加了的、时间日期对象拷贝
minus： 返回一个时间减少了的、时间日期对象拷贝
to： 把当前时间日期对象转换成另外一个，可能会损失部分状态
at： 用当前时间日期对象组合另外一个，创建一个更大或更复杂的时间日期对象
format： 提供格式化时间日期对象的能力
 * 
 * @author tongyufu
 *
 */
public class LocalDateDemo {

    public static void main(String[] args) {
        LocalDateDemo.localDate();
        LocalDateDemo.localTime();
        LocalDateDemo.localDateTime();
    }

    public static void localDate() {
        LocalDate date = LocalDate.now();
        System.out.println("年: " + date.getYear());
        Month month = date.getMonth();
        System.out.println("月: " + month.getValue());
        System.out.println("多少号: " + date.getDayOfMonth());
        DayOfWeek dow = date.getDayOfWeek();
        System.out.println("星期几: " + dow.getValue());
        System.out.println("当月的天数：" + date.lengthOfMonth());
        System.out.println("是否闰年：" + date.isLeapYear());

        LocalDate date2 = LocalDate.of(2016, 8, 22); //2016-08-22
        date2 = date2.withYear(2015); //2015-08-22
        date2 = date2.plusMonths(2); //2015-10-22
        date2 = date2.minusDays(3); //2015-10-19
        System.out.println(date2);

        System.out.println(date.compareTo(date2) == 0 ? "相等" : "不相等");
    }

    public static void localTime() {
        LocalTime time = LocalTime.now();
        System.out.println("Hour:" + time.getHour());
        System.out.println("Minute:" + time.getMinute());
        time.withSecond(6); //指定秒
        time.plusMinutes(5); //增加5分钟
        time.minusSeconds(2); //减少2秒钟
    }

    public static void localDateTime() {
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    }
}
